import json
import logging
import time
import types
from tencentcloud.common import credential
from tencentcloud.common.profile.client_profile import ClientProfile
from tencentcloud.common.profile.http_profile import HttpProfile
from tencentcloud.common.exception.tencent_cloud_sdk_exception import TencentCloudSDKException
from tencentcloud.sms.v20210111 import sms_client, models

# SecretId:AKIDGLCoAWv5E7tRjfSzIRN6br0wdBHNGvMa
# SecretKey:5KL7g17ze4HagYDdpnX4NSIuIRN4WlmY

sms_dict = {
    "QJ": ["2237156"],
    "LF": ["2237198"],
    "蓝色预警": {
        "s": "2310377",
        "z": "2310378",
    },
    "黄色预警": {
        "s": "2310383",
        "z": "2310384",
    },
    "橙色预警": {
        "s": "2310385",
        "z": "2310387",
    },
    "红色预警": {
        "s": "2310388",
        "z": "2310389",
    }
}


# def send_sms(data, sms_type: list):
#     try:
#         # 实例化一个认证对象，入参需要传入腾讯云账户 SecretId 和 SecretKey，此处还需注意密钥对的保密
#         # 代码泄露可能会导致 SecretId 和 SecretKey 泄露，并威胁账号下所有资源的安全性。以下代码示例仅供参考，建议采用更安全的方式来使用密钥，请参见：https://cloud.tencent.com/document/product/1278/85305
#         # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
#         cred = credential.Credential("AKIDGLCoAWv5E7tRjfSzIRN6br0wdBHNGvMa", "5KL7g17ze4HagYDdpnX4NSIuIRN4WlmY")
#         # 实例化一个http选项，可选的，没有特殊需求可以跳过
#         httpProfile = HttpProfile()
#         httpProfile.endpoint = "sms.tencentcloudapi.com"
#
#         # 实例化一个client选项，可选的，没有特殊需求可以跳过
#         clientProfile = ClientProfile()
#         clientProfile.httpProfile = httpProfile
#         # 实例化要请求产品的client对象,clientProfile是可选的
#         client = sms_client.SmsClient(cred, "ap-beijing", clientProfile)
#
#         print(sms_dict[sms_type[0]][sms_type[1]])
#         # 实例化一个请求对象,每个接口都会对应一个request对象
#         req = models.SendSmsRequest()
#         params = {
#             "PhoneNumberSet": ["18849350158"],
#             "SmsSdkAppId": "1400929001",
#             "TemplateId": sms_dict[sms_type[0]][sms_type[1]],
#             "SignName": "地质灾害监测公众号",
#             "TemplateParamSet": data
#         }
#         req.from_json_string(json.dumps(params))
#
#         # 返回的resp是一个SendSmsResponse的实例，与请求对象对应
#         resp = client.SendSms(req)
#         # 输出json格式的字符串回包
#         print(resp.to_json_string())
#
#
#     except TencentCloudSDKException as err:
#         print(err)


def send_sms(sms_param:dict, phone_list: list):
    try:
        # 实例化一个认证对象，入参需要传入腾讯云账户 SecretId 和 SecretKey，此处还需注意密钥对的保密
        # 代码泄露可能会导致 SecretId 和 SecretKey 泄露，并威胁账号下所有资源的安全性。以下代码示例仅供参考，建议采用更安全的方式来使用密钥，请参见：https://cloud.tencent.com/document/product/1278/85305
        # 密钥可前往官网控制台 https://console.cloud.tencent.com/cam/capi 进行获取
        cred = credential.Credential("AKIDGLCoAWv5E7tRjfSzIRN6br0wdBHNGvMa", "5KL7g17ze4HagYDdpnX4NSIuIRN4WlmY")
        # 实例化一个http选项，可选的，没有特殊需求可以跳过
        httpProfile = HttpProfile()
        httpProfile.endpoint = "sms.tencentcloudapi.com"

        # 实例化一个client选项，可选的，没有特殊需求可以跳过
        clientProfile = ClientProfile()
        clientProfile.httpProfile = httpProfile
        # 实例化要请求产品的client对象,clientProfile是可选的
        client = sms_client.SmsClient(cred, "ap-beijing", clientProfile)

        # print(sms_dict[sms_type[0]][sms_type[1]])
        logging.info('sms alarmType:%s location:%s  id:%s ',sms_param["alarmType"],sms_param["location"],sms_dict[sms_param["alarmType"]][sms_param["location"]])
        # 实例化一个请求对象,每个接口都会对应一个request对象
        req = models.SendSmsRequest()
        params = {
            "PhoneNumberSet": phone_list,
            "SmsSdkAppId": "1400929001",
            "TemplateId": sms_dict[sms_param["alarmType"]][sms_param["location"]],
            "SignName": "地质灾害监测公众号",
            "TemplateParamSet": []
        }
        req.from_json_string(json.dumps(params))

        # 返回的resp是一个SendSmsResponse的实例，与请求对象对应
        resp = client.SendSms(req)
        # 输出json格式的字符串回包
        print(resp.to_json_string())


    except TencentCloudSDKException as err:
        print(err)



# send_sms([time.strftime("%H:%M", time.localtime()), "1001", "3", "23.1", "1", "25.3"])

# 2024-08-09 09:20:37
# {}-{}-{} {}:{}:{}

# {1}-{2}-{3} {4}:{5}:{6}，{7}的监测仪,前{8}三轴倾角变化速率最大值达到{9}度；前{10}三轴倾角变化最大值达到{11}度触发红色预警。
